#============================================================
#	Map Data
#============================================================
# @datetime: 2022-4-9 15:30:04
#============================================================
extends Node


var TileType : _TileType = _TileType.new()


var map : TileMap setget set_map

var start_pos : Vector2
var end_pos : Vector2


#============================================================
#   Set/Get
#============================================================
func set_map(value: TileMap) -> void:
	map = value


##  获取位置上的瓦片类型 
## @pos  
## @return  
func get_pos_cell_type(pos: Vector2) -> int:
	return map.get_cellv(map.world_to_map(pos))


##  是否踩在木板上
## @body  
## @return  
func is_on_wood(body: Node2D) -> bool:
	var pos = body.global_position
	pos.y += 1
	return TileType.Bridge == get_pos_cell_type(pos)


#============================================================
#   内置
#============================================================
func _enter_tree():
	var tileset : TileSet = load("res://src/assets/tileset/tileset.tres")
	for idx in tileset.get_tiles_ids():
		var t_name : String = tileset.tile_get_name(idx)
		if t_name in TileType:
			TileType.set(t_name, idx)
	
	Logger.info(self, [
		"包含有的瓷砖："
		, tileset.get_tiles_ids()
		, TileType.get_tile_keys()
	], '\n\t\t')


#============================================================
#   内部类
#============================================================
class _TileType:
	var Background: int	# 背景
	var Brick: int	# 砖块
	var Enemy: int	# 敌人
	var Bridge: int	# 桥
	var Door: int	# 门
	var Tree: int	# 树
	var Home: int	# 房间，起始结束门
	var Item: int	# 物品
	var Spikes: int	# 尖刺
	var Barrel: int	# 木桶
	var Spring: int	# 弹簧
	var Stairs: int	# 楼梯
	
	var _data := {}
	
	func get_tile_keys():
		return _data.keys()
	
	func get_data():
		for p_data in get_script().get_script_property_list():
			_data[p_data['name']] = get(p_data['name'])
		_data.erase("_data")
		return _data



